import { defineStore } from 'pinia'
import { getCaseList, addCase, editCase, deleteCase, runCase } from '@/api/case'

// 定义用例状态存储
export const useCaseStore = defineStore('case', {
  state: () => ({
    list: [], // 用例列表
    total: 0, // 用例总数
    page: 1, // 当前页码
    limit: 10, // 每页条数
    loading: false // 加载状态
  }),
  actions: {
    // 获取用例列表
    async fetchCaseList(params = {}) {
      this.loading = true
      try {
        const res = await getCaseList({
          page: this.page,
          limit: this.limit,
          ...params
        })
        this.list = res.list || []
        this.total = res.total || 0
      } catch (error) {
        console.error('获取用例列表失败', error)
      } finally {
        this.loading = false
      }
    },
    // 新增用例
    async addCase(data) {
      try {
        await addCase(data)
        // 新增成功后刷新列表
        this.fetchCaseList()
        return true
      } catch (error) {
        console.error('新增用例失败', error)
        return false
      }
    },
    // 编辑用例
    async updateCase(id, data) {
      try {
        await editCase(id, data)
        // 编辑成功后刷新列表
        this.fetchCaseList()
        return true
      } catch (error) {
        console.error('编辑用例失败', error)
        return false
      }
    },
    // 删除用例
    async removeCase(id) {
      try {
        await deleteCase(id)
        // 删除成功后刷新列表
        this.fetchCaseList()
        return true
      } catch (error) {
        console.error('删除用例失败', error)
        return false
      }
    },
    // 执行用例
    async executeCase(id) {
      try {
        await runCase(id)
        return true
      } catch (error) {
        console.error('执行用例失败', error)
        return false
      }
    },
    // 切换页码
    changePage(page) {
      this.page = page
      this.fetchCaseList()
    },
    // 切换每页条数
    changeLimit(limit) {
      this.limit = limit
      this.page = 1
      this.fetchCaseList()
    }
  }
})